package com.sie.project.service;

import com.sie.project.entity.*;

import java.util.List;


/**
 * @author linjinde
 */
public interface ProjectService {


    /**
     *  根据项目类型获取项目清单
     * @param type eg:销售项目、开发项目
     * @return
     */
    List<Project> getProjectsByType(String type);

    /**
     *  获取延迟项目列表
     * @param type
     * @return
     */
    List<Project> getProjectLateByType(String type);
    /**
     *  统计每月新增的项目
     * @param type eg:销售项目、开发项目
     * @param className eg:全部，全新开发项目、衍生。。。
     * @return
     */
    int[] getProjectClassByYear(String type,String className);

    /**
     *  获取项目下拉选择
     * @return xxxxx项目名、项目id
     */
    List<ProjectSelectVo> getProjectSelect();

    /**
     *  统计不同项目类型的 不同子项项目的状态情况
     * @param type eg:销售项目、开发项目
     * @return
     */
    List<ProjectTaskDTO> getProjectStatistics(String type);

    /**
     *  获取项目详情
     * @param projectId 项目ID
     * @return
     */
    Project getProjectDetail(String projectId);

    /**
     *  项目目标列表
     * @param projectId 项目id
     * @return
     */
    List<ProjectTarget> getProjectTargetList(String  projectId);

    /**
     *  该项目里程碑列表
     * @param projectId 项目id
     * @return
     */
    List<ProjectMilestone> getProjectMilestoneList(String projectId);

    /**
     *  项目任务统计
     * @param projectId
     * @return
     */
    ProjectTaskStatistic getTaskStatistic(String projectId);

    /**
     *  获取所有项目任务
     * @param projectId
     * @return
     */
    List<ProjectTaskDTO> getTasks(String projectId);

    /**
     *  获取项目延时清单
     * @param projectId 项目id
     * @return
     */
    List<ProjectTaskDTO> getTasksByExtension(String projectId);

    /**
     * 获取项目问题清单
     * @param projectId 项目id
     * @return
     */
    List<ProjectIssues> getIssuesList(String projectId);

    List<IssuesStatistic> getIssuesStatistics(String projectId);
    /**
     *  获取项目风险清单
     * @param projectId 项目id
     * @return
     */
    List<ProjectRisk> getRiskList(String projectId);

    List<RiskStatistic> getRiskStatistic(String projectId);

    List<ProjectMemberRes> getProjectMemberRes(String projectId);

}
